package cc.rengu.igas.share.facade.bean.cups;

import cc.rengu.oltp.utility.util.StringUtil;

import java.io.UnsupportedEncodingException;

/**
 * @author Administrator
 * @date 2021/4/16
 */
@SuppressWarnings("AlibabaLowerCamelCaseVariableNaming")
public class F104 {
    private boolean f104_Open;
    private String f104_FORMATTER;

    private boolean f104_SI_Open;
    private String f104_SI_01;
    private String f104_SI_02;
    private String f104_SI_03;
    private String f104_SI_04;
    private String f104_SI_05;
    private String f104_SI_06;
    private String f104_SI_07;
    private String f104_SI_08;
    private String f104_SI_09;
    private String f104_SI_10;
    private String f104_SI_11;
    private String f104_SI_12;
    private String f104_SI_13;
    private String f104_SI_14;
    private String f104_SI_15;
    private String f104_SI_16;
    private String f104_SI_17;

    private boolean f104_AI_Open;
    private String f104_AI_01;
    private String f104_AI_02;
    private String f104_AI_03;
    private String f104_AI_04;
    private String f104_AI_05;
    private String f104_AI_06;
    private String f104_AI_07;
    private String f104_AI_08;
    private String f104_AI_09;
    private String f104_AI_10;
    private String f104_AI_11;
    private String f104_AI_12;
    private String f104_AI_13;
    private String f104_AI_14;
    private String f104_AI_15;
    private String f104_AI_16;
    private String f104_AI_17;

    private boolean f104_CD_Open;
    private String f104_CD_01;
    private String f104_CD_02;
    private String f104_CD_03;
    private String f104_CD_04;
    private String f104_CD_05;
    private String f104_CD_06;
    private String f104_CD_07;
    private String f104_CD_08;
    private String f104_CD_09;
    private String f104_CD_10;

    private boolean f104_MU_Open;
    private String f104_MU_01;
    private String f104_MU_02;

    private boolean f104_CC_Open;
    private String f104_CC_01;
    private String f104_CC_02;
    private String f104_CC_03;
    private String f104_CC_04;
    private String f104_CC_05;
    private String f104_CC_06;

    private boolean f104_BI_Open;
    private String f104_BI_01;
    private String f104_BI_02;

    private boolean f104_PI_Open;
    private String f104_PI_01;
    private String f104_PI_02;
    private String f104_PI_03;
    private String f104_PI_04;
    private String f104_PI_05;
    private String f104_PI_06;
    private String f104_PI_07;
    private String f104_PI_08;

    private boolean f104_EM_Open;
    private String f104_EM_01;
    private String f104_EM_02;
    private String f104_EM_03;
    private String f104_EM_04;
    private String f104_EM_05;

    private boolean f104_AG_Open;
    private String f104_AG_01;
    private String f104_AG_02;
    private String f104_AG_03;

    private boolean f104_RT_Open;
    private String f104_RT_01;
    private String f104_RT_02;

    private boolean f104_IV_Open;
    private String f104_IV_01;

    private boolean f104_TR_Open;
    private String f104_TR_01;

    private boolean f104_TT_Open;
    private String f104_TT_01;

    private boolean f104_TI_Open;
    private String f104_TI_01;
    private String f104_TI_02;
    private String f104_TI_03;

    private boolean f104_TO_Open;
    private String f104_TO_01;
    private String f104_TO_02;
    private String f104_TO_03;

    public F104() {
        f104_Open = false;
    }

    public boolean isF104_Open() {
        return f104_Open;
    }

    public void setF104_Open(boolean f104_Open) {
        this.f104_Open = f104_Open;
    }

    public String getF104_FORMATTER() {
        return f104_FORMATTER;
    }

    public void setF104_FORMATTER(String f104_FORMATTER) {
        this.f104_FORMATTER = f104_FORMATTER;
    }

    public boolean isF104_SI_Open() {
        return f104_SI_Open;
    }

    public void setF104_SI_Open(boolean f104_SI_Open) {
        this.f104_SI_Open = f104_SI_Open;
    }

    public String getF104_SI_01() {
        return f104_SI_01;
    }

    public void setF104_SI_01(String f104_SI_01) {
        this.f104_SI_01 = f104_SI_01;
    }

    public String getF104_SI_02() {
        return f104_SI_02;
    }

    public void setF104_SI_02(String f104_SI_02) {
        this.f104_SI_02 = f104_SI_02;
    }

    public String getF104_SI_03() {
        return f104_SI_03;
    }

    public void setF104_SI_03(String f104_SI_03) {
        this.f104_SI_03 = f104_SI_03;
    }

    public String getF104_SI_04() {
        return f104_SI_04;
    }

    public void setF104_SI_04(String f104_SI_04) {
        this.f104_SI_04 = f104_SI_04;
    }

    public String getF104_SI_05() {
        return f104_SI_05;
    }

    public void setF104_SI_05(String f104_SI_05) {
        this.f104_SI_05 = f104_SI_05;
    }

    public String getF104_SI_06() {
        return f104_SI_06;
    }

    public void setF104_SI_06(String f104_SI_06) {
        this.f104_SI_06 = f104_SI_06;
    }

    public String getF104_SI_07() {
        return f104_SI_07;
    }

    public void setF104_SI_07(String f104_SI_07) {
        this.f104_SI_07 = f104_SI_07;
    }

    public String getF104_SI_08() {
        return f104_SI_08;
    }

    public void setF104_SI_08(String f104_SI_08) {
        this.f104_SI_08 = f104_SI_08;
    }

    public String getF104_SI_09() {
        return f104_SI_09;
    }

    public void setF104_SI_09(String f104_SI_09) {
        this.f104_SI_09 = f104_SI_09;
    }

    public String getF104_SI_10() {
        return f104_SI_10;
    }

    public void setF104_SI_10(String f104_SI_10) {
        this.f104_SI_10 = f104_SI_10;
    }

    public String getF104_SI_11() {
        return f104_SI_11;
    }

    public void setF104_SI_11(String f104_SI_11) {
        this.f104_SI_11 = f104_SI_11;
    }

    public String getF104_SI_12() {
        return f104_SI_12;
    }

    public void setF104_SI_12(String f104_SI_12) {
        this.f104_SI_12 = f104_SI_12;
    }

    public String getF104_SI_13() {
        return f104_SI_13;
    }

    public void setF104_SI_13(String f104_SI_13) {
        this.f104_SI_13 = f104_SI_13;
    }

    public String getF104_SI_14() {
        return f104_SI_14;
    }

    public void setF104_SI_14(String f104_SI_14) {
        this.f104_SI_14 = f104_SI_14;
    }

    public String getF104_SI_15() {
        return f104_SI_15;
    }

    public void setF104_SI_15(String f104_SI_15) {
        this.f104_SI_15 = f104_SI_15;
    }

    public String getF104_SI_16() {
        return f104_SI_16;
    }

    public void setF104_SI_16(String f104_SI_16) {
        this.f104_SI_16 = f104_SI_16;
    }

    public String getF104_SI_17() {
        return f104_SI_17;
    }

    public void setF104_SI_17(String f104_SI_17) {
        this.f104_SI_17 = f104_SI_17;
    }

    public boolean isF104_AI_Open() {
        return f104_AI_Open;
    }

    public void setF104_AI_Open(boolean f104_AI_Open) {
        this.f104_AI_Open = f104_AI_Open;
    }

    public String getF104_AI_01() {
        return f104_AI_01;
    }

    public void setF104_AI_01(String f104_AI_01) {
        this.f104_AI_01 = f104_AI_01;
    }

    public String getF104_AI_02() {
        return f104_AI_02;
    }

    public void setF104_AI_02(String f104_AI_02) {
        this.f104_AI_02 = f104_AI_02;
    }

    public String getF104_AI_03() {
        return f104_AI_03;
    }

    public void setF104_AI_03(String f104_AI_03) {
        this.f104_AI_03 = f104_AI_03;
    }

    public String getF104_AI_04() {
        return f104_AI_04;
    }

    public void setF104_AI_04(String f104_AI_04) {
        this.f104_AI_04 = f104_AI_04;
    }

    public String getF104_AI_05() {
        return f104_AI_05;
    }

    public void setF104_AI_05(String f104_AI_05) {
        this.f104_AI_05 = f104_AI_05;
    }

    public String getF104_AI_06() {
        return f104_AI_06;
    }

    public void setF104_AI_06(String f104_AI_06) {
        this.f104_AI_06 = f104_AI_06;
    }

    public String getF104_AI_07() {
        return f104_AI_07;
    }

    public void setF104_AI_07(String f104_AI_07) {
        this.f104_AI_07 = f104_AI_07;
    }

    public String getF104_AI_08() {
        return f104_AI_08;
    }

    public void setF104_AI_08(String f104_AI_08) {
        this.f104_AI_08 = f104_AI_08;
    }

    public String getF104_AI_09() {
        return f104_AI_09;
    }

    public void setF104_AI_09(String f104_AI_09) {
        this.f104_AI_09 = f104_AI_09;
    }

    public String getF104_AI_10() {
        return f104_AI_10;
    }

    public void setF104_AI_10(String f104_AI_10) {
        this.f104_AI_10 = f104_AI_10;
    }

    public String getF104_AI_11() {
        return f104_AI_11;
    }

    public void setF104_AI_11(String f104_AI_11) {
        this.f104_AI_11 = f104_AI_11;
    }

    public String getF104_AI_12() {
        return f104_AI_12;
    }

    public void setF104_AI_12(String f104_AI_12) {
        this.f104_AI_12 = f104_AI_12;
    }

    public String getF104_AI_13() {
        return f104_AI_13;
    }

    public void setF104_AI_13(String f104_AI_13) {
        this.f104_AI_13 = f104_AI_13;
    }

    public String getF104_AI_14() {
        return f104_AI_14;
    }

    public void setF104_AI_14(String f104_AI_14) {
        this.f104_AI_14 = f104_AI_14;
    }

    public String getF104_AI_15() {
        return f104_AI_15;
    }

    public void setF104_AI_15(String f104_AI_15) {
        this.f104_AI_15 = f104_AI_15;
    }

    public String getF104_AI_16() {
        return f104_AI_16;
    }

    public void setF104_AI_16(String f104_AI_16) {
        this.f104_AI_16 = f104_AI_16;
    }

    public String getF104_AI_17() {
        return f104_AI_17;
    }

    public void setF104_AI_17(String f104_AI_17) {
        this.f104_AI_17 = f104_AI_17;
    }

    public boolean isF104_CD_Open() {
        return f104_CD_Open;
    }

    public void setF104_CD_Open(boolean f104_CD_Open) {
        this.f104_CD_Open = f104_CD_Open;
    }

    public String getF104_CD_01() {
        return f104_CD_01;
    }

    public void setF104_CD_01(String f104_CD_01) {
        this.f104_CD_01 = f104_CD_01;
    }

    public String getF104_CD_02() {
        return f104_CD_02;
    }

    public void setF104_CD_02(String f104_CD_02) {
        this.f104_CD_02 = f104_CD_02;
    }

    public String getF104_CD_03() {
        return f104_CD_03;
    }

    public void setF104_CD_03(String f104_CD_03) {
        this.f104_CD_03 = f104_CD_03;
    }

    public String getF104_CD_04() {
        return f104_CD_04;
    }

    public void setF104_CD_04(String f104_CD_04) {
        this.f104_CD_04 = f104_CD_04;
    }

    public String getF104_CD_05() {
        return f104_CD_05;
    }

    public void setF104_CD_05(String f104_CD_05) {
        this.f104_CD_05 = f104_CD_05;
    }

    public String getF104_CD_06() {
        return f104_CD_06;
    }

    public void setF104_CD_06(String f104_CD_06) {
        this.f104_CD_06 = f104_CD_06;
    }

    public String getF104_CD_07() {
        return f104_CD_07;
    }

    public void setF104_CD_07(String f104_CD_07) {
        this.f104_CD_07 = f104_CD_07;
    }

    public String getF104_CD_08() {
        return f104_CD_08;
    }

    public void setF104_CD_08(String f104_CD_08) {
        this.f104_CD_08 = f104_CD_08;
    }

    public String getF104_CD_09() {
        return f104_CD_09;
    }

    public void setF104_CD_09(String f104_CD_09) {
        this.f104_CD_09 = f104_CD_09;
    }

    public String getF104_CD_10() {
        return f104_CD_10;
    }

    public void setF104_CD_10(String f104_CD_10) {
        this.f104_CD_10 = f104_CD_10;
    }

    public boolean isF104_MU_Open() {
        return f104_MU_Open;
    }

    public void setF104_MU_Open(boolean f104_MU_Open) {
        this.f104_MU_Open = f104_MU_Open;
    }

    public String getF104_MU_01() {
        return f104_MU_01;
    }

    public F104 setF104_MU_01(String f104_MU_01) {
        this.f104_MU_01 = f104_MU_01;
        if (StringUtil.isEmptyOrNull(f104_MU_01)) {
            return this;
        }
        f104_MU_Open = true;
        f104_Open = true;
        f104_FORMATTER = F104_FORMATTER.MU.getCode();
        return this;
    }

    public String getF104_MU_02() {
        return f104_MU_02;
    }

    public F104 setF104_MU_02(String f104_MU_02) {
        this.f104_MU_02 = f104_MU_02;
        if (StringUtil.isEmptyOrNull(f104_MU_02)) {
            return this;
        }
        f104_MU_Open = true;
        f104_Open = true;
        f104_FORMATTER = F104_FORMATTER.MU.getCode();
        return this;
    }

    public boolean isF104_CC_Open() {
        return f104_CC_Open;
    }

    public void setF104_CC_Open(boolean f104_CC_Open) {
        this.f104_CC_Open = f104_CC_Open;
    }

    public String getF104_CC_01() {
        return f104_CC_01;
    }

    public F104 setF104_CC_01(String f104_CC_01) {
        this.f104_CC_01 = f104_CC_01;
        if (StringUtil.isEmptyOrNull(f104_CC_01)) {
            return this;
        }
        f104_CC_Open = true;
        f104_Open = true;
        f104_FORMATTER = F104_FORMATTER.CC.getCode();
        return this;
    }

    public String getF104_CC_02() {
        return f104_CC_02;
    }

    public F104 setF104_CC_02(String f104_CC_02) {
        this.f104_CC_02 = f104_CC_02;
        if (StringUtil.isEmptyOrNull(f104_CC_02)) {
            return this;
        }
        f104_CC_Open = true;
        f104_Open = true;
        f104_FORMATTER = F104_FORMATTER.CC.getCode();
        return this;
    }

    public String getF104_CC_03() {
        return f104_CC_03;
    }

    public F104 setF104_CC_03(String f104_CC_03) {
        this.f104_CC_03 = f104_CC_03;
        if (StringUtil.isEmptyOrNull(f104_CC_03)) {
            return this;
        }
        f104_CC_Open = true;
        f104_Open = true;
        f104_FORMATTER = F104_FORMATTER.CC.getCode();
        return this;
    }

    public String getF104_CC_04() {
        return f104_CC_04;
    }

    public F104 setF104_CC_04(String f104_CC_04) {
        this.f104_CC_04 = f104_CC_04;
        if (StringUtil.isEmptyOrNull(f104_CC_04)) {
            return this;
        }
        f104_CC_Open = true;
        f104_Open = true;
        f104_FORMATTER = F104_FORMATTER.CC.getCode();
        return this;
    }

    public String getF104_CC_05() {
        return f104_CC_05;
    }

    public F104 setF104_CC_05(String f104_CC_05) {
        this.f104_CC_05 = f104_CC_05;
        if (StringUtil.isEmptyOrNull(f104_CC_05)) {
            return this;
        }
        f104_CC_Open = true;
        f104_Open = true;
        f104_FORMATTER = F104_FORMATTER.CC.getCode();
        return this;
    }

    public String getF104_CC_06() {
        return f104_CC_06;
    }

    public F104 setF104_CC_06(String f104_CC_06) {
        this.f104_CC_06 = f104_CC_06;
        if (StringUtil.isEmptyOrNull(f104_CC_06)) {
            return this;
        }
        f104_CC_Open = true;
        f104_Open = true;
        f104_FORMATTER = F104_FORMATTER.CC.getCode();
        return this;
    }

    public boolean isF104_BI_Open() {
        return f104_BI_Open;
    }

    public void setF104_BI_Open(boolean f104_BI_Open) {
        this.f104_BI_Open = f104_BI_Open;
    }

    public String getF104_BI_01() {
        return f104_BI_01;
    }

    public void setF104_BI_01(String f104_BI_01) {
        this.f104_BI_01 = f104_BI_01;
    }

    public String getF104_BI_02() {
        return f104_BI_02;
    }

    public void setF104_BI_02(String f104_BI_02) {
        this.f104_BI_02 = f104_BI_02;
    }

    public boolean isF104_PI_Open() {
        return f104_PI_Open;
    }

    public void setF104_PI_Open(boolean f104_PI_Open) {
        this.f104_PI_Open = f104_PI_Open;
    }

    public String getF104_PI_01() {
        return f104_PI_01;
    }

    public void setF104_PI_01(String f104_PI_01) {
        this.f104_PI_01 = f104_PI_01;
    }

    public String getF104_PI_02() {
        return f104_PI_02;
    }

    public void setF104_PI_02(String f104_PI_02) {
        this.f104_PI_02 = f104_PI_02;
    }

    public String getF104_PI_03() {
        return f104_PI_03;
    }

    public void setF104_PI_03(String f104_PI_03) {
        this.f104_PI_03 = f104_PI_03;
    }

    public String getF104_PI_04() {
        return f104_PI_04;
    }

    public void setF104_PI_04(String f104_PI_04) {
        this.f104_PI_04 = f104_PI_04;
    }

    public String getF104_PI_05() {
        return f104_PI_05;
    }

    public void setF104_PI_05(String f104_PI_05) {
        this.f104_PI_05 = f104_PI_05;
    }

    public String getF104_PI_06() {
        return f104_PI_06;
    }

    public void setF104_PI_06(String f104_PI_06) {
        this.f104_PI_06 = f104_PI_06;
    }

    public String getF104_PI_07() {
        return f104_PI_07;
    }

    public void setF104_PI_07(String f104_PI_07) {
        this.f104_PI_07 = f104_PI_07;
    }

    public String getF104_PI_08() {
        return f104_PI_08;
    }

    public void setF104_PI_08(String f104_PI_08) {
        this.f104_PI_08 = f104_PI_08;
    }

    public boolean isF104_EM_Open() {
        return f104_EM_Open;
    }

    public void setF104_EM_Open(boolean f104_EM_Open) {
        this.f104_EM_Open = f104_EM_Open;
    }

    public String getF104_EM_01() {
        return f104_EM_01;
    }

    public void setF104_EM_01(String f104_EM_01) {
        this.f104_EM_01 = f104_EM_01;
    }

    public String getF104_EM_02() {
        return f104_EM_02;
    }

    public void setF104_EM_02(String f104_EM_02) {
        this.f104_EM_02 = f104_EM_02;
    }

    public String getF104_EM_03() {
        return f104_EM_03;
    }

    public void setF104_EM_03(String f104_EM_03) {
        this.f104_EM_03 = f104_EM_03;
    }

    public String getF104_EM_04() {
        return f104_EM_04;
    }

    public void setF104_EM_04(String f104_EM_04) {
        this.f104_EM_04 = f104_EM_04;
    }

    public String getF104_EM_05() {
        return f104_EM_05;
    }

    public void setF104_EM_05(String f104_EM_05) {
        this.f104_EM_05 = f104_EM_05;
    }

    public boolean isF104_AG_Open() {
        return f104_AG_Open;
    }

    public void setF104_AG_Open(boolean f104_AG_Open) {
        this.f104_AG_Open = f104_AG_Open;
    }

    public String getF104_AG_01() {
        return f104_AG_01;
    }

    public void setF104_AG_01(String f104_AG_01) {
        this.f104_AG_01 = f104_AG_01;
    }

    public String getF104_AG_02() {
        return f104_AG_02;
    }

    public void setF104_AG_02(String f104_AG_02) {
        this.f104_AG_02 = f104_AG_02;
    }

    public String getF104_AG_03() {
        return f104_AG_03;
    }

    public void setF104_AG_03(String f104_AG_03) {
        this.f104_AG_03 = f104_AG_03;
    }

    public boolean isF104_RT_Open() {
        return f104_RT_Open;
    }

    public void setF104_RT_Open(boolean f104_RT_Open) {
        this.f104_RT_Open = f104_RT_Open;
    }

    public String getF104_RT_01() {
        return f104_RT_01;
    }

    public void setF104_RT_01(String f104_RT_01) {
        this.f104_RT_01 = f104_RT_01;
    }

    public String getF104_RT_02() {
        return f104_RT_02;
    }

    public void setF104_RT_02(String f104_RT_02) {
        this.f104_RT_02 = f104_RT_02;
    }

    public boolean isF104_IV_Open() {
        return f104_IV_Open;
    }

    public void setF104_IV_Open(boolean f104_IV_Open) {
        this.f104_IV_Open = f104_IV_Open;
    }

    public String getF104_IV_01() {
        return f104_IV_01;
    }

    public void setF104_IV_01(String f104_IV_01) {
        this.f104_IV_01 = f104_IV_01;
    }

    public boolean isF104_TR_Open() {
        return f104_TR_Open;
    }

    public void setF104_TR_Open(boolean f104_TR_Open) {
        this.f104_TR_Open = f104_TR_Open;
    }

    public String getF104_TR_01() {
        return f104_TR_01;
    }

    public void setF104_TR_01(String f104_TR_01) {
        this.f104_TR_01 = f104_TR_01;
    }

    public boolean isF104_TT_Open() {
        return f104_TT_Open;
    }

    public void setF104_TT_Open(boolean f104_TT_Open) {
        this.f104_TT_Open = f104_TT_Open;
    }

    public String getF104_TT_01() {
        return f104_TT_01;
    }

    public void setF104_TT_01(String f104_TT_01) {
        this.f104_TT_01 = f104_TT_01;
    }

    public boolean isF104_TI_Open() {
        return f104_TI_Open;
    }

    public void setF104_TI_Open(boolean f104_TI_Open) {
        this.f104_TI_Open = f104_TI_Open;
    }

    public String getF104_TI_01() {
        return f104_TI_01;
    }

    public void setF104_TI_01(String f104_TI_01) {
        this.f104_TI_01 = f104_TI_01;
    }

    public String getF104_TI_02() {
        return f104_TI_02;
    }

    public void setF104_TI_02(String f104_TI_02) {
        this.f104_TI_02 = f104_TI_02;
    }

    public String getF104_TI_03() {
        return f104_TI_03;
    }

    public void setF104_TI_03(String f104_TI_03) {
        this.f104_TI_03 = f104_TI_03;
    }

    public boolean isF104_TO_Open() {
        return f104_TO_Open;
    }

    public void setF104_TO_Open(boolean f104_TO_Open) {
        this.f104_TO_Open = f104_TO_Open;
    }

    public String getF104_TO_01() {
        return f104_TO_01;
    }

    public F104 setF104_TO_01(String f104_TO_01) {
        this.f104_TO_01 = f104_TO_01;
        if (StringUtil.isEmptyOrNull(f104_TO_01)) {
            return this;
        }
        f104_TO_Open = true;
        f104_Open = true;
        f104_FORMATTER = F104_FORMATTER.TO.getCode();
        return this;
    }

    public String getF104_TO_02() {
        return f104_TO_02;
    }

    public F104 setF104_TO_02(String f104_TO_02) {
        this.f104_TO_02 = f104_TO_02;
        if (StringUtil.isEmptyOrNull(f104_TO_02)) {
            return this;
        }
        f104_TO_Open = true;
        f104_Open = true;
        f104_FORMATTER = F104_FORMATTER.TO.getCode();
        return this;
    }

    public String getF104_TO_03() {
        return f104_TO_03;
    }

    public F104 setF104_TO_03(String f104_TO_03) {
        this.f104_TO_03 = f104_TO_03;
        if (StringUtil.isEmptyOrNull(f104_TO_03)) {
            return this;
        }
        f104_TO_Open = true;
        f104_Open = true;
        f104_FORMATTER = F104_FORMATTER.TO.getCode();
        return this;
    }

    /**
     * 系统自动根据 单位结算卡户名1的完整户名 是否超过GB18030字符集的90字节判断是否要存储在{@link #f104_CC_03}tag<br>
     * 若未超过，直接将单位结算卡户名1的完整户名设置到 {@link #f104_CC_02}tag，<br>
     * 否则，将单位结算卡户名1的完整户名拆解到{@link #f104_CC_02}tag、{@link #f104_CC_03}tag
     *
     * @param acctName1 单位结算卡户名1的完整户名
     * @return 返回结果
     * @throws UnsupportedEncodingException 失败抛出异常
     */
    public F104 setF104_CC_AcctName1(String acctName1) throws UnsupportedEncodingException {
        if (StringUtil.isEmptyOrNull(acctName1)) {
            return this;
        }
        //单位结算卡CC用法返回完整户名
        byte[] bAcctName = acctName1.getBytes("GB18030");
        String acctName = null;
        String acctNameExp = null;
        //超过90的放在后面扩展字段
        byte[] bAcctName1 = new byte[90];
        if (bAcctName.length > 90) {
            byte[] bAcctNameExp = new byte[bAcctName.length - 90];
            System.arraycopy(bAcctName, 0, bAcctName1, 0, 90);
            acctName = new String(bAcctName1, "GB18030");
            System.arraycopy(bAcctName, 90, bAcctNameExp, 0, bAcctName.length - 90);
            acctNameExp = new String(bAcctNameExp, "GB18030");
        } else {
            acctName = acctName1;
        }
        setF104_CC_02(acctName);
        if (acctNameExp != null) {
            setF104_CC_03(acctNameExp);
        }
        return this;
    }

    /**
     * 系统自动根据 单位结算卡户名2的完整户名 是否超过GB18030字符集的90字节判断是否要存储在{@link #f104_CC_04}tag<br>
     * 若未超过，直接将单位结算卡户名1的完整户名设置到 {@link #f104_CC_04}tag，<br>
     * 否则，将单位结算卡户名2的完整户名拆解到{@link #f104_CC_04}tag、{@link #f104_CC_05}tag
     *
     * @param acctName2 单位结算卡户名2的完整户名
     * @return 返回结果
     * @throws UnsupportedEncodingException 失败抛出异常
     */
    public F104 setF104_CC_AcctName2(String acctName2) throws UnsupportedEncodingException {
        if (StringUtil.isEmptyOrNull(acctName2)) {
            return this;
        }
        //单位结算卡CC用法返回完整户名
        byte[] bAcctName = acctName2.getBytes("GB18030");
        String acctName = null;
        String acctNameExp = null;
        //超过90的放在后面扩展字段
        byte[] bAcctName1 = new byte[90];
        if (bAcctName.length > 90) {
            byte[] bAcctNameExp = new byte[bAcctName.length - 90];
            System.arraycopy(bAcctName, 0, bAcctName1, 0, 90);
            acctName = new String(bAcctName1, "GB18030");
            System.arraycopy(bAcctName, 90, bAcctNameExp, 0, bAcctName.length - 90);
            acctNameExp = new String(bAcctNameExp, "GB18030");
        } else {
            acctName = acctName2;
        }
        setF104_CC_04(acctName);
        if (acctNameExp != null) {
            setF104_CC_05(acctNameExp);
        }
        return this;
    }

    /**
     * 104域子域的用法组装
     *
     * @param subTag       子域用法标签
     * @param subTagHexStr 子域值(16进制)
     * @return 组装结果
     */
    public String build104SubFieldWithHexStr(String subTag, String subTagHexStr) {
        if (StringUtil.isEmptyOrNull(subTagHexStr)) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        sb.append(subTag).
                append(String.format(HEX_FORMAT, subTagHexStr.length() / 2)).
                append(subTagHexStr);
        return sb.toString();
    }

    /**
     * 104域子域的用法组装
     *
     * @param subTag    子域用法标签
     * @param subTagStr 子域值
     * @return 组装结果
     * @throws UnsupportedEncodingException 失败抛异常
     */
    public String build104SubFieldWithStr(String subTag, String subTagStr) throws UnsupportedEncodingException {
        if (StringUtil.isEmptyOrNull(subTagStr)) {
            return "";
        }
        byte[] subTagStrGB18030 = subTagStr.getBytes("GB18030");
        return build104SubFieldWithHexStr(subTag, StringUtil.binaryToHexString(subTagStrGB18030).toUpperCase());
    }


    /**
     * 104域整个子域组装
     *
     * @param f104TagHexStr 104域用法标签(16进制)
     * @param f104SubField  104域子域的StringBuilder
     * @param f104Field     104域整个子域的StringBuilder
     * @return 组装结果 StringBuilder
     * @throws UnsupportedEncodingException 失败抛异常
     */
    public StringBuilder build104Field(String f104TagHexStr, StringBuilder f104SubField, StringBuilder f104Field) throws UnsupportedEncodingException {
        if (f104SubField.length() > 0) {
            f104Field.append(f104TagHexStr).
                    append(StringUtil.binaryToHexString(String.format("%03d", f104SubField.toString().length() / 2).
                            getBytes("GB18030")).toUpperCase()).
                    append(f104SubField.toString());
        }
        return f104Field;
    }


    /**
     * PI
     */
    public static final String PI = "PI";
    /**
     * PI 用法16进制字符串
     */
    public static final String PI_HEX = "5049";
    /**
     * SI
     */
    public static final String SI = "SI";
    /**
     * SI 用法16进制字符串
     */
    public static final String SI_HEX = "5349";
    /**
     * MU
     */
    public static final String MU = "MU";
    /**
     * MU 用法16进制字符串
     */
    public static final String MU_HEX = "4D55";
    /**
     * BI
     */
    public static final String BI = "BI";
    /**
     * BI 用法16进制字符串
     */
    public static final String BI_HEX = "4249";
    /**
     * AG
     */
    public static final String AG = "AG";
    /**
     * AG 用法16进制字符串
     */
    public static final String AG_HEX = "4147";
    /**
     * RT
     */
    public static final String RT = "RT";
    /**
     * RT 用法16进制字符串
     */
    public static final String RT_HEX = "5254";
    /**
     * CC
     */
    public static final String CC = "CC";
    /**
     * CC 用法16进制字符串
     */
    public static final String CC_HEX = "4343";
    /**
     * IV
     */
    public static final String IV = "IV";
    /**
     * IV 用法16进制字符串
     */
    public static final String IV_HEX = "4956";
    /**
     * TR
     */
    public static final String TR = "TR";
    /**
     * TR 用法16进制字符串
     */
    public static final String TR_HEX = "5452";
    /**
     * TT
     */
    public static final String TT = "TT";
    /**
     * TT 用法16进制字符串
     */
    public static final String TT_HEX = "5454";
    /**
     * TI
     */
    public static final String TI = "TI";
    /**
     * TI 用法16进制字符串
     */
    public static final String TI_HEX = "5449";
    /**
     * TO
     */
    public static final String TO = "TO";
    /**
     * TO 用法16进制字符串
     */
    public static final String TO_HEX = "544F";
    /**
     * 104域HEX的最大长度
     */
    private static final int MAX_104FIELD_HEX_LEN = 512 * 2;
    /**
     * 104域每个子域的头长度 3个长度为+2个tag 16进制*2
     */
    private static final int MAX_104FIELD_SUB_FIELD_HEAD_HEX_LEN = 5 * 2;
    /**
     * 16进制格式化
     */
    public static final String HEX_FORMAT = "%02X";
}
